5 דק' הצגה עצמית שלי,
10-15 דק' הסבר על החברה והתפקיד
ועוד שעה שאלות טכניות.
שאלות מתוך הראיון
היה לי לממש API של STACK אבל ששומרת את האיבר הקטן ביותר כל הזמן. ואפשר להשיג אותו בכל רגע נתון.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2024
הרעיון שלי הוא לממשל מחסנית (אם מבקשים גם בצורה ספציפית איך לממשל את המחסנית אז אפשר עם ליסט או כל מבנה נתונים נאחר עם פוינטר לאיבר האחרון שהוכנס פשוט) בצורה כזו שיש פוינטר לאיבר הקטן ביותר במחסנית בכל רגע נתון (מבצעים בדיקה בכל הכנסה למחסנית ומעדכנים את הפוינטר הזה בהתאם).
אם הכוונה ב'להשיג אותו' היא לשלוף אותו מהמחסנית החוצה (גם אם הוא באמצע המחסנית לצורך העניין), אפשר לייצר איזשהו משתנה בוליאני שיהיה חיובי אם"ם התבצעה קריאה לפונקציה ששולפת את האיבר הקטן ביותר במסחנית. ואז בכל הוצאה מהמחסנית, לבדוק אם מדובר באיבר הזה ואם המשתנה הבוליאני חיובי, אם כן נתעלם ממנו ונמשיך לאיבר הבא. ככה אפשר לממש את זה ב-O(1) במקום כמובן לייצר מחסנית חדשה לגמרי בלי אותו האיבר.
נתון לך מערך ומספר X. מצא שני מספרים במערך שסכומם הוא X אם קיים.
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוגוסט 2023
3 תשובות:
1. לולאה כפולה O(N^2)
2. מיין את המערך, תרוץ עם שני פויינטרים אחד מההתחלה ואחד מהסוף. אם הסכום של האיברים שווה ל X החזר, ואם לא קדם את הפויינטר המתאים בהתאם.
3. האש: תזרוק את כל האיברים בטבלת האש. כעת חפש אם לכל איבר המשלים שלו (X - arr[i]) מופיע בטבלה, אם כן החזר
ספטמבר 2023
def two_sum(numbers: list[int], target: int) -> tuple[int,int]:
{}=seen
:for i in range(len(numbers))
remain = traget - numbers[i]
if remain in seen:
return seen[remain], i
else:
seen[numbers[i]] = i